// pages/music/index.js
// pages/music/index.js
const ac = wx.getBackgroundAudioManager() //wx.createInnerAudioContext()
let lastIndex //最后点击歌曲的索引号
let position={ offset:0, songCount:0 }
Page({
    data:{},
    onReachBottom(){
        this.list(this.data.word)
    },
    list(word){ //获取搜索关键词word对应的歌曲列表的内容并显示
        if(!word || (position.offset>0 && position.offset>=position.songCount))return //word不存在,或者没有更多的数据，直接返回
		wx.request({
			url: 'https://music.163.com/api/search/get/?s='+word+'&limit=20&type=1&offset='+position.offset,
            success: e => { //要是有箭头函数 (e)=>{}，不要使用function(e){ ... }
                console.log( e)
				let a = e.data.result.songs
                position.offset+=a.length //调整偏移量
                let songCount=position.songCount=e.data.result.songCount //搜索到的总数量
                let change={word, songCount} //用来保存有变化的数据
                let size=(this.data.songs||[]).length //页面上已经显示的数据个数
                console.log(222,size)
				for (let i = 0; i < a.length; ++i) {
                    let s = a[i]; //数组中的一首歌曲
                    change['songs['+(size+i)+']']={
						id: s.id, //歌曲的id
						name: s.name, //歌曲的名字
						duration: s.duration, //歌曲时长(ms)
						length: this.formatDuration(s.duration), //分：秒
						album: s.album.name //专辑名称
					}
				}
				this.setData(change) //设置页面数据
			}
		})
	},
	formatDuration(ms) {
		ms = parseInt(ms / 1000)
		let minute = parseInt(ms / 60) //分
		let second = ms % 60; //秒
		return minute + ":" + (second < 10 ? '0' : '') + second
	},
	doPlay(index){ //根据要歌曲的索引号index来播放歌曲
		let change = {
			paused: false
		} //记录要修改的数据
		if (lastIndex != undefined) {
			// if(lastIndex==index) return //点击的是上次点击的歌曲，直接返回
			change['songs[' + lastIndex + '].selected'] = false
		}
		let songs = this.data.songs
		let song = songs[index] //获取点击的歌曲json对象
		change['songs[' + index + '].selected'] = true
		lastIndex = index //把刚点击的索引号设置为最后点击的索引号
		let mp3 = 'https://music.163.com/song/media/outer/url?id=' + song.id + '.mp3'
		console.log(song)
		ac.src = mp3
		ac.title= song.name //歌曲的标题
		// ac.startTime = 150 //开始播放的时间，单位是秒
		ac.play() //播放歌曲
        this.setData(change) //更新页面数据
        let q=wx.createSelectorQuery()
        q.select('#s'+index).fields({size:true, rect:true})
            .selectViewport().fields({size:true, scrollOffset:true})
            .exec(r=>{
                let s=r[0], v=r[1], scrollTop
                console.log(111,s.bottom,v.height,v.scrollTop, scrollTop)
                if(s.top<0){ //歌曲在屏幕顶端部分或全部不可见
                    scrollTop=v.scrollTop+s.top
                }else if(s.bottom>v.height){ //歌曲在屏幕底端部分或全部不可见
                    scrollTop=v.scrollTop+s.bottom-v.height+10
                }else{
                    return
                }
                wx.pageScrollTo({ scrollTop })
            })
	},
	search(e){ //搜索歌曲时执行的代码
        let word=e.detail.value //搜索的关键词
        position.offset=0 //保证从头来获取歌曲数据
        this.setData({songs:[]})
		this.list(word) //获取列表信息并展示
	},
	onLoad(options) {
		let handle = e => { //播放下一首歌曲播放
			let nextIndex=lastIndex+1 //自动播放的下一首歌曲的索引号
			if(nextIndex>=this.data.songs.length) nextIndex=0 //所有歌曲播放结束，从头重新开始
			this.doPlay(nextIndex)
		}
		ac.onEnded(handle)//监听歌曲播放完毕
        ac.onError(handle)//监听歌曲播放出错
		this.list('蒋大为')
	},
	
	pause(e) {
		if (this.data.paused) {
			ac.play()
		} else {
			ac.pause()
		}
		this.setData({
			paused: !this.data.paused
		})
	},
	play(e) { //播放歌曲
		console.log('play....')
		let index = e.currentTarget.dataset.songIndex //点击歌曲的索引号，从0开始
        this.doPlay(index)
        
        
    },

})